


//@Aspect
//@Component
//public class InterfaceLogAspect {
//    private static final Logger logger = LoggerFactory.getLogger(InterfaceLogAspect.class);
//    @Autowired
//    InterfaceLogGrpcService interfaceLogService;
//
//
//    @Pointcut("@annotation(com.xinglico.store.offline.aspect.factory.Record)")
//    public void logPointCut() {
//    }
//
//    @Around("logPointCut()")
//    public Object around(ProceedingJoinPoint point) throws Throwable {
//        long time=0;
//        long beginTime = System.currentTimeMillis();
//        Object result=null;
//        try{
//            // 执行方法
//            result = point.proceed();
//            // 执行时长(毫秒)
//            time = System.currentTimeMillis() - beginTime;
//            saveLog(point, time,JSON.toJSONString(result),null);
//
//        }catch (StatusRuntimeException exception){
//            logger.debug("idc-offline切面监听捕捉异常报错->{}",exception);
//            if(result==null){
//                saveLog(point, time,"远程服务调用不成功~~",exception);
//            }else{
//                saveLog(point, time,"数据长度过长，不支持录入",exception);
//            }
//
//        }catch (Exception e){
//            logger.debug("idc-offline切面监听捕捉异常报错->{}",e);
//            if(result==null){
//                saveLog(point, time,"远程服务调用不成功~~",e);
//            }else{
//                saveLog(point, time,JSON.toJSONString(result),e);
//            }
//        }
//        if(null==result){
//            return new WebJsonBean<Object>(BaseCode.RPC_ERROR);
//        }
//        return result;
//    }
//    void saveLog(ProceedingJoinPoint joinPoint, long time,String result,Exception e) {
//        // 获取request
//        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
//        Integer logType=1;
//        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
//        Method method = signature.getMethod();
//        InterfaceLogParam interfaceLog = new InterfaceLogParam();
//
//        if(null!=e){
//            logType=0;
//            interfaceLog.setExcetionRemark(JSON.toJSONString(e));
//        }
//        String tokenKey="token";
//        String token=request.getHeader(tokenKey);
//        if(null==token){
//            tokenKey="authToken";
//            token=request.getHeader(tokenKey);
//        }
//        if(null==token){
//            tokenKey="accessKey";
//            token=request.getHeader(tokenKey);
//        }
//
//        interfaceLog.setToken(tokenKey+"="+token);
//        interfaceLog.setLogType(logType);
//        interfaceLog.setResultParams(result);
//        Record log = method.getAnnotation(Record.class);
//        if (log != null) {
//            // 操作备注
//            interfaceLog.setExecuteRemark(log.value());
//        }
//
//        // 请求的方法名
//        String className = joinPoint.getTarget().getClass().getName();
//        String methodName = signature.getName();
//        interfaceLog.setReqMethod(className + "." + methodName);
//        // 请求的参数,需要对GET请求做单独处理
//        if("GET".equals(request.getMethod().toUpperCase())){
//            Enumeration<String> enumeration=request.getParameterNames();
//            String params="";
//            while(enumeration.hasMoreElements()){
//                StringBuffer stringBuffer=new StringBuffer();
//                String name=enumeration.nextElement();
//                String value=request.getParameter(name);
//                stringBuffer.append("&");
//                stringBuffer.append(name);
//                stringBuffer.append("=");
//                stringBuffer.append(value);
//
//                params+=stringBuffer.toString();
//            }
//            if (params.length() != 0) {
//                params = params.substring(1, params.length());
//            }
//            interfaceLog.setReqParams(params);
//        }else{
//            Object[] args = joinPoint.getArgs();
//            try {
//                if(args.length>0){
//                    String params = JSON.toJSONString(args[0]);
//                    interfaceLog.setReqParams(params);
//                }
//            } catch (Exception e2) {
//                interfaceLog.setExcetionRemark(JSON.toJSONString(e2));
//            }
//        }
//
//
//        interfaceLog.setReqUrl(request.getRequestURL().toString());
//        // 设置IP地址
//        interfaceLog.setReqIp(getIpAddr(request));
//        // 用户名
//
//        interfaceLog.setExecuteTime(time/1000.0);
//        interfaceLogService.addInterfaceLog(interfaceLog);
//    }
//
//    public String getIpAddr(HttpServletRequest request) {
//	    String ip = request.getHeader("x-forwarded-for");
//		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
//			ip = request.getHeader("Proxy-Client-IP");
//		}
//		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
//			ip = request.getHeader("WL-Proxy-Client-IP");
//		}
//		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
//			ip = request.getRemoteAddr();
//		}
//		return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
//    }
//}
